#pragma once

#include <iostream>
#include <string>
#include <sys/types.h>
#include <sys/socket.h>
#include "Log.hpp"
#include <stdlib.h>
#include <cstring>
#include <strings.h>
#include <arpa/inet.h>

class InetAddr
{
private:
	void GetAddress(std::string *ip, uint16_t *port)
	{
		*ip = inet_ntoa(_addr.sin_addr);
		*port = ntohs(_addr.sin_port);
	}

public:
	InetAddr(const struct sockaddr_in &addr) : _addr(addr)
	{
		GetAddress(&_ip, &_port);
	}

	std::string ip()
	{
		return _ip;
	}

	uint16_t port()
	{
		return _port;
	}

	~InetAddr()
	{
	}

private:
	struct sockaddr_in _addr;
	std::string _ip;
	uint16_t _port;
};